/**
 * 数组变换
 *
 * 牛牛有一个数组，里面的数可能不相等，现在他想把数组变为：所有的数都相等。问是否可行。
 * 牛牛可以进行的操作是：将数组中的任意一个数改为这个数的两倍。
 * 这个操作的使用次数不限，也可以不使用，并且可以对同一个位置使用多次。
 *
 * 数据范围：
 * 数组大小满足1≤n≤50  ，数组中的数满足val≤10^9
 *
 * 输入描述:
 * 输入一个正整数N (N <= 50)
 * 接下来一行输入N个正整数，每个数均小于等于1e9.
 *
 *
 * 输出描述:
 * 假如经过若干次操作可以使得N个数都相等，那么输出"YES", 否则输出"NO"
 */

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * 这题实际上是让我们一直乘乘, 但是我们正着乘以2, 当然也可以反过来 / 2
 * 正着乘 2 是一直没有头的, 但是反过来却是有头的....
 * 再通过 set 过滤下, 最后只要判断 set.length 就可以打印结果了
 * 时间复杂度 : O(n log(n)
 * 空间复杂度 : O(n)
 */

public  class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        Set<Integer> hash = new HashSet<>();

        for (int i = 0; i < n; i++) {

            int x = in.nextInt();

            // 取最终结果, 加入 set 中
            hash.add(getMin(x));
        }

        if (hash.size() == 1) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
    }

    // 一直 / 2, 直到有余数为止
    public static int getMin(int x) {
        while (x % 2 == 0) {
            x /= 2;
        }
        return x;
    }
}